/*
 *       (c) Copyright 2011
 *
 * @author    : funtik
 * @date      : 25.10.2011
 * @update    : 26.10.2011 16:13
 *
 * This file is provided as is (no warranties).
 *
 */
//                     ПОДКЛЮЧЕНИЯ ДОПОЛНИТЕЛЬНЫХ ОПИСАНИЙ                      //
#include <a_samp>
#include <a_mysql>
//                     ОПРЕДЕЛЕНИЯ ПРИВАТНЫХ ПЕРЕМЕННЫХ                         //
//*Временно* static PlayerTeam[MAX_PLAYERS];
//##############################################################################//
//                                                                              //
//                            ОПРЕДЕЛЕНИЯ КОНСТАНТ                              //
//                                                                              //
//##############################################################################//
#define VERSION 				Alpha//Версия мода
#undef 	MAX_PLAYERS             //Убираем стандартное значение MAX_PLAYERS 500
#define MAX_PLAYERS 			50	//Устанавливаем Максимальное Количество Игроков(MAX_PLAYERS)

#define FOR(%1,%2)	for(new %1 = 0; %1 < %2; %1++)//Для упрощеннения Например:FOR(i,MAX_PLAYERS)

#define DIALOG_REGISTER     0
#define DIALOG_LOGIN        1
#define DIALOG_TEAM         2
#define DIALOG_TEAMACCEPT	2

#define MAX_TEAMS           7
#define TEAM_CLEARSKY 		1
#define TEAM_OSOZN 			2
#define TEAM_MONOLIT        3
#define TEAM_SVOBODA        4
#define TEAM_DOLG    		5
#define TEAM_BANDITI 		6
#define TEAM_RENEGATI 		7
//##############################################################################//
//                                                                              //
//                                   forward-ы                                  //
//                                                                              //
//##############################################################################//
forward OnGameModeSecond();
//##############################################################################//
//                                                                              //
//                                   ЦВЕТА                                      //
//                                                                              //
//##############################################################################//
#define COLOR_SYSTEM 		0xAFAFAFAA
#define COLOR_GREEN 		0x339966FF
#define COLOR_RED 			0xFF0000AA
#define COLOR_WHITE  		0xFFFFFFAA
#define COLOR_BLUE 			0x0259EAAA
#define COLOR_YELLOW 		0xFFFF00FF
#define COLOR_ORANGE 		0xFF6600FF




#define COL_SYSTEM 			"{AFAFAF}"
#define COL_GREEN 			"{339966}"
#define COL_RED 			"{FF0000}"
#define COL_WHITE  			"{FFFFFF}"
#define COL_BLUE 			"{0259EA}"
#define COL_YELLOW 			"{FFFF00}"
#define COL_ORANGE 			"{FF6600}"
//##############################################################################//
//                                                                              //
//                     ОПРЕДЕЛЕНИЯ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ                        //
//                                                                              //
//##############################################################################//
//*Временно* new PlayerClass[MAX_PLAYERS];
//*Временно* new bool:gPlayerSpawn[MAX_PLAYERS];
new bool:PlayerLogged[MAX_PLAYERS];
new OnGameModeSecondTimer;
new PlayerPassword[MAX_PLAYERS];//Нужен для сохранения пароля между регистрацией и выбором расы
//##############################################################################//
//                                                                              //
//                    			 TEXTDRAWS                  			        //
//                                                                              //
//##############################################################################//

//##############################################################################//
//                                                                              //
//                           ДВУМЕРНЫЕ МАССИВЫ                                  //
//                                                                              //
//##############################################################################//
enum pInfo//для считывания из файла
{
	pPassword[64],
	pTeam,
	pClass,
	Float:pPos_x,
	Float:pPos_y,
	Float:pPos_z
};
new PlayerInfo[MAX_PLAYERS][pInfo];

enum tInfo//jkl
{
	Float:xSpawn,
	Float:ySpawn,
	Float:zSpawn,
	Color[16]
};

new TeamInfo[MAX_TEAMS][tInfo]={
{0.0,0.0,0.0,"0xFF0000FF"},
{0.0,0.0,0.0,"0x00FFFFFF"},
{0.0,0.0,0.0,"0xFFFF00FF"},
{0.0,0.0,0.0,"0xFF00FFFF"},
{0.0,0.0,0.0,"0x0000FFFF"},
{0.0,0.0,0.0,"0x00FF00FF"},
{0.0,0.0,0.0,"0xFFAAFFFF"}
};
main(){}
//##############################################################################//
//                                                                              //
//                            	 TEXT   			                            //
//                                                                              //
//##############################################################################//

//##############################################################################//
//                                                                              //
//                            	 PUBLICS   			                            //
//                                                                              //
//##############################################################################//
public OnGameModeInit()
{
    new Xenus[][]={"DeAMX rABHo HaX!1","Xenus RuleZzZz"};
    #pragma unused Xenus
	SetGameModeText("S.T.A.L.K.E.R OnLine:"#VERSION);
	MysqlConnection(1);
	CreateTextDraws();
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	OnGameModeSecondTimer = SetTimer("OnGameModeSecond", 1000, true);
	return 1;
}
public OnGameModeExit()
{
 	KillAllTimers();
    MysqlConnection(0);
	return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}
public OnPlayerConnect(playerid)
{
    ResetPlayerVariable(playerid);
    TogglePlayerSpectating(playerid, true);
    ForceClassSelection(playerid);
	OnPlayerEnter(playerid);
	return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    SavePlayerData(playerid);
	return 1;
}
public OnPlayerSpawn(playerid)
{
	switch(PlayerInfo[playerid][pTeam])
	{
		case TEAM_CLEARSKY:OnPlayerSpawnTeam(playerid,TEAM_CLEARSKY);
		case TEAM_OSOZN:OnPlayerSpawnTeam(playerid,TEAM_OSOZN);
		case TEAM_MONOLIT:OnPlayerSpawnTeam(playerid,TEAM_MONOLIT);
		case TEAM_SVOBODA:OnPlayerSpawnTeam(playerid,TEAM_SVOBODA);
		case TEAM_DOLG:OnPlayerSpawnTeam(playerid,TEAM_DOLG);
		case TEAM_BANDITI:OnPlayerSpawnTeam(playerid,TEAM_BANDITI);
		case TEAM_RENEGATI:OnPlayerSpawnTeam(playerid,TEAM_RENEGATI);
	}
	SetPlayerPos(playerid, PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z]);
	return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}
public OnVehicleSpawn(vehicleid)
{
	return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}
public OnPlayerText(playerid, text[])
{
	return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
	return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}
public OnRconCommand(cmd[])
{
	return 1;
}
public OnPlayerRequestSpawn(playerid)
{
	return 1;
}
public OnObjectMoved(objectid)
{
	return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}
public OnPlayerExitedMenu(playerid)
{
	return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	new string[128];
	if(newkeys == KEY_NO)
	{
	    new Float:sx,Float:sy,Float:sz;
  		GetPlayerVelocity(playerid, sx, sy, sz);
  		format(string, 128, "Debug: Velocity X: {339966}%.4f{AFAFAF}, Velocity Y: {339966}%.4f{AFAFAF}, Velocity Z: {339966}%.4f{AFAFAF}",sx,sy,sz);
  		SendClientMessage(playerid, COLOR_SYSTEM, string);
  		new animname[32];
    	GetAnimationName(GetPlayerAnimationIndex(playerid),animname,32,animname,32);
    	format(string, 128, "Debug: Animation name: {339966}%s{AFAFAF}",animname);
  		SendClientMessage(playerid, COLOR_SYSTEM, string);
  		GivePlayerWeapon(playerid, 46, 1);
	}
	return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}
public OnPlayerUpdate(playerid)
{
	return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	if(dialogid == DIALOG_LOGIN)
	{
	    if(response)
	    {
	        return OnPlayerLogin(playerid, inputtext);
		}
		else
		{
			SendClientMessage(playerid,COLOR_SYSTEM,"Входить "COL_RED"обязательно!");
			return Kick(playerid);
		}
	}
	else if(dialogid == DIALOG_REGISTER)
	{
	    if(response)
	    {
	        ShowPlayerDialog(playerid, DIALOG_TEAM, DIALOG_STYLE_LIST,"{0000FF}Выбор команды","{00FAAF}Ты ещё не опытный сталкер и тебе не мешала бы команда. \n\n\n{00FF00}Выбери свой путь... Не ошибись!","Ок","");
    		OnPlayerSendClearMessage(playerid,7);
          	strmid(PlayerPassword[playerid], inputtext, 0, strlen(inputtext), 255);
		}
		else
		{
			SendClientMessage(playerid,COLOR_SYSTEM,"Регистрация "COL_RED"обязательна"COL_SYSTEM"!");
			return Kick(playerid);
		}
	}
  	else if(dialogid == DIALOG_TEAM)
  	{
  	    new Team[32];
  	    new Description[MAX_TEAMS][2048];
		strcat(Description[TEAM_CLEARSKY-1], "{AAFFAA}Группировка сталкеров-учёных. Держится в стороне от остальных сталкерских группировок и занимается изучением Зоны на окраинной локации Болота.\n");
		strcat(Description[TEAM_CLEARSKY-1], "Наиболее закрытый клан в Зоне — остальные её жители, за редким исключением, ничего о нём не знают. Равнодушны к материальной выгоде и власти над Зоной.\n");
		strcat(Description[TEAM_CLEARSKY-1], "Единственными противниками «Чистого неба» являются ренегаты и монолитовцы — первые не дают учёным спокойно работать на Болотах, а затем мешают им пройти в Лиманск, а вторые ведут со сталкерами «Чистого неба» уличные бои уже в Лиманске и на ЧАЭС.\n");
		strcat(Description[TEAM_CLEARSKY-1], "Руководитель «Чистого Неба» — бывший научный сотрудник лаборатории Х-8 Лебедев.\n");
		strcat(Description[TEAM_CLEARSKY-1], "Его научный помощник — профессор Каланча. Форма группировки — бронежилеты небесно-голубого цвета, эмблема — голубое небо с солнцем в центре и чайками по бокам.\n");
		strcat(Description[TEAM_OSOZN-1], "{AAFFAA}Группа учёных, которая объединила ментальный потенциал каждого из своих представителей с помощью специальной аппаратуры, расположенной в районе ЧАЭС.");
		strcat(Description[TEAM_OSOZN-1], "Считается, что по их вине возникла Зона.\n");
		strcat(Description[TEAM_MONOLIT-1], "{AFAFAF}Агрессивная группировка (а фактически — религиозная секта), препятствующая продвижению сталкеров к центру Зоны.\n");
		strcat(Description[TEAM_MONOLIT-1], "Её члены верят, что в центре Зоны покоится магический кристалл внеземного происхождения — Монолит.\n");
		strcat(Description[TEAM_MONOLIT-1], "Вначале группировка всего лишь пыталась найти Монолит и не конфликтовала с другими сталкерами.\n");
		strcat(Description[TEAM_MONOLIT-1], "Но после прорыва группировки за Выжигатель, она была зомбированна «О-сознанием» для охраны центра Зоны от сталкеров.\n");
		strcat(Description[TEAM_MONOLIT-1], "С этого момента «монолитовцы» изменили свою политику на более агрессивную — защиту Монолита от «неверных» и из-за этого начали войну с представителями всех остальных группировок Зоны.\n");
		strcat(Description[TEAM_SVOBODA-1], "{AFAFAF}Группировка сталкеров-анархистов, считающих, что Зона должна быть свободна в изучении, и оспаривающих это право у государства.\n");
		strcat(Description[TEAM_SVOBODA-1], "Они не хотят прямого уничтожения Зоны, а наоборот — желают сохранить её и использовать как «двигатель» прогресса всего человечества в целом.\n");
		strcat(Description[TEAM_SVOBODA-1], "В «Свободе» отсутствует строгая дисциплина, обязательные приказы, воинские звания. Отношения между командирами и подчиненными носят дружеский характер.\n");
		strcat(Description[TEAM_SVOBODA-1], "Авторитет командира в «Свободе» определяет его власть. Отсутствие жёсткой дисциплины ведёт и к тому, что среди «свободных» практикуется каннабиноидная наркомания, что служит причиной частых насмешек со стороны «Долга» и вольных сталкеров.\n");
		strcat(Description[TEAM_SVOBODA-1], "Идеология и практика «Свободы» делает её сталкеров непримиримыми противниками бойцов «Долга».\n");
		strcat(Description[TEAM_SVOBODA-1], "Враждуют анархисты также с военными. К учёным «Свобода» относится нейтрально так как они изучают Зону и пытаются извлечь из неё пользу.\n");
		strcat(Description[TEAM_SVOBODA-1], "С наёмниками и бандитами руководство «Свободы» стремится держать нейтралитет, но на практике это оборачивается частыми столкновениями. С вольными сталкерами клан держит нейтралитет.\n");
		strcat(Description[TEAM_DOLG-1], "{AFAFAF}Военизированный сталкерский клан. Многие сталкеры «Долга» — бывшие военные из спецназа или прочих армейских частей или же простые добровольцы.\n");
		strcat(Description[TEAM_DOLG-1], "В клане действует проармейский Устав, за нарушение которого грозит наказание от строгого выговора до изгнания из клана.\n");
		strcat(Description[TEAM_DOLG-1], "«Долг» ставит своей основной целью сдерживать проявления Зоны до тех пор, пока не найдётся способ уничтожить саму Зону.\n");
		strcat(Description[TEAM_DOLG-1], "Главным противником «Долга» является «Свобода». Конфликт во многом носит идеологический характер, так как Свобода рассматривает Зону как подарок человечеству.\n");
		strcat(Description[TEAM_DOLG-1], "Вторым по принципиальности противником «Долга» являются бандиты. Стремясь навести порядок в Зоне, «долговцы» последовательно искореняют в ней преступность. Отряды клана в центре Зоны вынуждены сражаться и с «Монолитом».\n");
		strcat(Description[TEAM_DOLG-1], "Дружеские отношения группировка поддерживает с вольными сталкерами, а также с учёными, так как, по мнению долговцев, именно они должны найти способ эффективной борьбы с Зоной. Интересным является вопрос о взаимоотношении «Долга» с военными.\n");
		strcat(Description[TEAM_DOLG-1], "Судя по рассказам некоторых сталкеров, они далеко не идеальны, между армейскими частями и членами клана даже бывают вооружённые стычки, однако, со слов самих долговцев, соблюдается неформальный нейтралитет.\n");
		strcat(Description[TEAM_BANDITI-1], "{AAFFAA}Представители криминального мира, пришедшие в Зону по разным причинам: заработать на продаже артефактов, скрыться от закона, купить или продать оружие.\n");
		strcat(Description[TEAM_BANDITI-1], "Основное занятие — грабёж и вымогательства у вольных сталкеров. Бандиты считают, что поскольку они контролируют «порядок» в Зоне, одиночки обязаны им за это платить.\n");
		strcat(Description[TEAM_BANDITI-1], "Носят чёрные кожаные плащи и куртки. Эмблема — череп с пробитым теменем. Вооружение, как правило, примитивное — обрез ружья или пистолет-пулемёт.\n");
		strcat(Description[TEAM_RENEGATI-1], "{AFAFAF}Состояла исключительно из самых презренных личностей Зоны. Бандиты, мародеры, предатели и рецидивисты — бывшие члены других группировок, изменившие и предавшие свои взгляды.\n");
		strcat(Description[TEAM_RENEGATI-1], "Этот сброд не имеет организованной структуры и лидера как такового. Сбиваясь в небольшие группы, охотятся за лёгкой добычей, промышляя убийствами и грабежами, как правило, молодых и неопытных сталкеров.\n");
		strcat(Description[TEAM_RENEGATI-1], "Чаще всего встречаются вдоль периметра аномальной зоны отчуждения. Ренегаты — это самые аморальные сталкеры, которые настолько провинились перед своей группировкой, что их выгнали и ни под каким предлогом не принимают обратно.\n");
		strcat(Description[TEAM_RENEGATI-1], "У них нет ни этики, ни морали. Их терпеть не могут все сталкеры, включая бандитов, которые тоже не особо щепетильны в плане морали, но и они считают, что Ренегаты живут «не по понятиям».\n");
		strcat(Description[TEAM_RENEGATI-1], "Их загнали в самую глубь Зоны — на болота, но даже и там не оставляли попыток уничтожить, что в конце концов обернулось успехом. Ренегаты переняли вооружение, оснащение и даже сленг у бандитов. Эмблема — скорпион.\n");
	    if(response)
	    {
	        switch(listitem)
	        {
	            case TEAM_CLEARSKY-1:Team="{0000FF}«Чистое Небо»";
				case TEAM_OSOZN-1:Team="{0000FF}«О-Сознание»";
				case TEAM_MONOLIT-1:Team="{0000FF}«Монолит»";
				case TEAM_SVOBODA-1:Team="{0000FF}«Свобода»";
				case TEAM_DOLG-1:Team="{0000FF}«Долг»";
				case TEAM_BANDITI-1:Team="{0000FF}Бандиты";
				case TEAM_RENEGATI-1:Team="{0000FF}«Ренегаты»";
			}
			ShowPlayerDialog(playerid, DIALOG_TEAMACCEPT,DIALOG_STYLE_MSGBOX, Team,Description[listitem],"Вступить","Назад");
	    	PlayerInfo[playerid][pTeam] = listitem+1;
	    	return OnPlayerRegister(playerid, PlayerPassword[playerid]);
	    }
	    else
	    {
	    	ShowPlayerDialog(playerid, DIALOG_TEAM, DIALOG_STYLE_LIST,"{0000FF}Выбор команды","Выбери свой путь... Не ошибись!","Ок","");
	    }
	}
	return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}
//##############################################################################//
//                                                                              //
//                            	 STOCKS   			                            //
//                                                                              //
//##############################################################################//
stock KillAllTimers()
{
    KillTimer(OnGameModeSecondTimer);
}
stock ResetPlayerVariable(playerid)//Обнулисть все значения игроку
{
	PlayerLogged[playerid] = false;
}
stock OnPlayerSpawnTeam(playerid, team)
{
	SetPlayerColor(playerid,TeamInfo[team-1][Color]);
	SetPlayerPos(playerid, TeamInfo[team-1][xSpawn], TeamInfo[team-1][ySpawn], TeamInfo[team-1][zSpawn]);
	        
	return 1;
}
stock OnPlayerEnter(playerid)
{
	new pname[24],query[256];
 	GetPlayerName(playerid, pname, 24); //получает имя игрока
	format(query, sizeof(query), "SELECT * FROM `users` WHERE PlayerName = '%s' LIMIT 1", pname); //выбираем ячейку
    mysql_query(query); //посылаем запрос
    mysql_store_result(); //записываем результат запроса
    new rows = mysql_num_rows();//возвращает количество строк
    if(rows > 0) {
		SendClientMessage(playerid,COLOR_SYSTEM, "Добро пожаловать на "COL_GREEN"S.T.A.L.K.E.R OnLine:"#VERSION" "COL_SYSTEM"сервер");
        return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Вход на сервер","Введите пароль от своего аккаунта в область для ввода:","LOGIN","");
	}
	else {
		SendClientMessage(playerid,COLOR_SYSTEM, "Добро пожаловать на "COL_GREEN"S.T.A.L.K.E.R OnLine:"#VERSION" "COL_SYSTEM"сервер");
	    return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Вход на сервер","Для удобной игры вам необходимо зарегистрироваться","REGISTER","");
	}
}


stock SavePlayerData(playerid)
{
	if(PlayerLogged[playerid])
	{
	    new query[200],playername[24];
		GetPlayerName(playerid, playername, 24);
		GetPlayerPos(playerid, PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z]);
        format(query, sizeof(query), "UPDATE users SET `Position_x`=%.4f, `Position_y`=%.4f, `Position_z`=%.4f WHERE `PlayerName`='%s'",PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z], playername); mysql_query(query);
	}
	return 1;
}


stock OnPlayerLogin(playerid, password[])
{
    new pname[24],query[256],tmp[128];
    GetPlayerName(playerid, pname, 24); //получает имя игрока
    format(query, sizeof(query), "SELECT * FROM `users` WHERE PlayerName = '%s' AND `Password` = '%s' LIMIT 1", pname, password);
    mysql_query(query);
    mysql_store_result();
    mysql_retrieve_row();
    if(mysql_num_rows() > 0)
	{
	    mysql_get_field("Team",tmp); PlayerInfo[playerid][pTeam] = strval(tmp);
	    mysql_get_field("Class",tmp); PlayerInfo[playerid][pClass] = strval(tmp);
	    mysql_get_field("Position_x",tmp); PlayerInfo[playerid][pPos_x] = floatstr(tmp);
	    mysql_get_field("Position_y",tmp); PlayerInfo[playerid][pPos_y] = floatstr(tmp);
	    mysql_get_field("Position_z",tmp); PlayerInfo[playerid][pPos_z] = floatstr(tmp);
	    mysql_free_result();
	    PlayerLogged[playerid] = true;
	    TogglePlayerSpectating(playerid, false);
    	ForceClassSelection(playerid);
	    return SendClientMessage(playerid, COLOR_SYSTEM, " Вы успешно вошли");
	}
	else
	{
		SendClientMessage(playerid, COLOR_RED, "Пароль Не соответствует вашей учётной записи.");//Пароль несовпадает с логином.
		mysql_free_result();
		Kick(playerid);
	    return 1;
	}
}




stock OnPlayerRegister(playerid, password[])
{
    new query[256],playername[24];
    GetPlayerName(playerid, playername, 24);
    PlayerInfo[playerid][pClass] = 0;
    format(query, sizeof(query), "INSERT INTO users (`PlayerName`, `Password`, `Team`, `Class`, `Position_x`, `Position_y`, `Position_z`) VALUES('%s', '%s', '%d', '%d', '%.4f', '%.4f', '%.4f')", playername, password, PlayerInfo[playerid][pTeam], PlayerInfo[playerid][pClass], PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z]); mysql_query(query);
    SendClientMessage(playerid,COLOR_SYSTEM, "Поздравляем с регистрацией. Всего доброго!");
    PlayerLogged[playerid] = true;
    TogglePlayerSpectating(playerid, false);
    ForceClassSelection(playerid);
    return 1;
}




stock MysqlConnection(status)
{
	mysql_debug(1);
	mysql_set_charset("cp1251_bin");
	if(status == 1)
	{
		if(mysql_connect("localhost", "root", "samp", "vertrigo"))
		{
			printf("Connected to mysql database");
			mysql_query("CREATE TABLE IF NOT EXISTS `samp`.`users`(`PlayerName` VARCHAR( 24 ) NOT NULL, `Password` VARCHAR( 40 ) NOT NULL, `Race` INT( 20 ) NOT NULL, `Class` INT( 20 ) NOT NULL, `Position_x` INT( 20 ) NOT NULL, `Position_y` INT( 20 ) NOT NULL, `Position_z` INT( 20 ) NOT NULL)");
		}
		else printf("Подключение к базе MySql не получилось.");
	}
	else if(status == 0)
	{
	    mysql_close();
        printf("База MySql отключена.");
	}
	return 1;
}

public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    return 1;
}

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    return 1;
}

stock CreateTextDraws()
{
    return 1;
}


public OnGameModeSecond()
{
	FOR(playerid,MAX_PLAYERS)
	{
	    //
	}
	return 1;
}


stock OnPlayerSendClearMessage(id,ss)
{
    for(new i=0;i<ss;i++)SendClientMessage(id,COLOR_SYSTEM," ");
}
